The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the inventors hereof, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted to be prior art against the present disclosure.
In a conventional FIFO memory device, data is written, stored, and read out in units of the same size, with only a single unit operated on at a time. In any particular implementation, the size of that data unit may differ from other implementations, and may be as small as one bit and as large as multiple bytes, but the data unit size is fixed and uniform.
Scalable-entry FIFOs also are known. In a scalable-entry FIFO, the data is stored in units of a certain size, each of which may be referred to as an “internal data unit.” Data may be written to a scalable-entry FIFO in “input data units” which may have a maximum size of some integer multiple of the size of an internal data unit. Similarly, data may be read from a scalable-entry FIFO in “output data units” which may have a maximum size of some integer multiple of the size of an internal data unit. The integer multiple may be the same or different for the input data unit and the output data unit. The sizes of the input data unit and the output data unit are referred to as maximum sizes because, while those sizes are fixed at the time the scalable-entry FIFO is implemented, at run time a user may choose to input or output less data than the maximum size would permit.
Known scalable-entry FIFOs are implemented with a flat memory structure. Multiplexers are used to select the internal data unit locations corresponding to any input data unit or output data unit. Any internal data unit can receive any input data unit, and any output data unit can receive any internal data unit, leading to large multiplexers, resulting in large device areas and making it difficult to close timing.